package com.suxin.reader;

import com.alibaba.datax.common.plugin.RecordSender;
import com.alibaba.datax.common.spi.Reader;
import com.alibaba.datax.common.util.Configuration;

import java.util.List;

/**
 * @Classname MySqlReader
 * @Description [ TODO ]
 * @Author Tang
 * @Date 2020/11/12 21:11
 * @Created by ASUS
 */
public class MySqlReader extends Reader {

    public static class Job extends Reader.Job {

        /**
         * job 对象初始化工作
         * 可以通过super.getPluginJobConf()获取与本插件相关的配置。
         */
        @Override
        public void init() {
            // 获取本插件相关的配置 读/写插件获取读/写的配置
            Configuration configuration = super.getPluginJobConf();
            System.out.println(configuration.getKeys().toArray(new String[]{}));
        }

        /**
         * 全局准备工作
         */
        @Override
        public void prepare() {
            super.prepare();
        }

        /**
         *根据切分策略把job拆分成Task。
         *
         * adviceNumber：我们配置的channel数。
         * 返回的是Task的配置列表
         *
         */
        @Override
        public List<Configuration> split(int adviceNumber) {
            return null;
        }

        /**
         * 全局的后置工作
         */
        @Override
        public void post() {
            super.post();
        }

        /**
         * Job对象自身销毁的工作。
         */
        @Override
        public void destroy() {

        }
    }

    public static class Task extends Reader.Task {

        /**
         * Task对象的初始化，super.getPluginJobConf()获取与本Task相关的配置。
         * 这里的配置是Job的split方法返回的配置列表中的其中一个。
         */
        @Override
        public void init() {

        }

        /**
         * 局部的准备工作。
         */
        @Override
        public void prepare() {
            super.prepare();
        }

        /**
         *从数据源读数据，写入到RecordSender中，
         *RecordSender会把数据写入连接Reader和Writer的缓存队列。
         *
         */
        @Override
        public void startRead(RecordSender recordSender) {

        }

        /**
         * 局部的后置工作
         */
        @Override
        public void post() {
            super.post();
        }

        /**
         * Task对象的自身销毁工作
         */
        @Override
        public void destroy() {

        }
    }


}